package at.ac.tuwien.prog.system;

import at.ac.tuwien.prog.compiler.ICompiler;
import at.ac.tuwien.prog.flash.IFlashManager;
import at.ac.tuwien.prog.memory.IMemoryManager;
import at.ac.tuwien.prog.parser.IParser;
import at.ac.tuwien.prog.view.MainWindow;

/**
 * kind of service locator, only providing access to other core components.
 * 
 * @author christoph.pickl@student.tuwien.ac.at
 */
public interface ISystem {

	/**
	 * simple getter method.
	 * 
	 * @return a main window instance
	 */
	MainWindow getMainWindow();

	/**
	 * simple getter method.
	 * 
	 * @return a memory manager instance
	 */
	IMemoryManager getMemoryManager();

	/**
	 * simple getter method.
	 * 
	 * @return a flash manager instance
	 */
	IFlashManager getFlashManager();

	/**
	 * simple getter method.
	 * 
	 * @return a compiler instance
	 */
	ICompiler getCompiler();

	/**
	 * simple getter method.
	 * 
	 * @return a parser instance
	 */
	IParser getParser();
	
}
